﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HolisticWare.VoIP.Getafisk.DLL_02BL_netfx35.Provisioning
{
	
	public
		class 
		ProvisioningGenerator
	{
		//---------------------------------------------------------------------------
		# region  Property.DirectoryTemplates
		/// <summary>
		/// DirectoryTemplates
		/// </summary>
		public
		  string
		  DirectoryTemplates
		{
			get
			{
				return directory_templates;
			} // DirectoryTemplates.get
			set
			{
				// for multi threading apps uncomment lines beginnig with //MT:
				//MT: object locker =  new object();          
				if (value != directory_templates)
				{
					// raise/trigger Event if somebody has subscribed to the event
					if (null != DirectoryTemplatesChanging)
					{
						// raise/trigger Event
						DirectoryTemplatesChanging(this, new EventArgs());
					}

					//MT: lock(directory_templates)
					{
						// Set the property value
						directory_templates = value;
						// raise/trigger Event if somebody has subscribed to the event
						if (null != DirectoryTemplatesChanged)
						{
							// raise/trigger Event
							DirectoryTemplatesChanged(this, new EventArgs());
						}
					}

					// raise/trigger Event if somebody has subscribed to the event
					if (null != DirectoryTemplatesChangePerformed)
					{
						// raise/trigger Event
						DirectoryTemplatesChangePerformed(this, new EventArgs());
					}
				}
				//MT: locker = null;

				return;
			} // DirectoryTemplates.set
		} // DirectoryTemplates

		/// <summary>
		/// private member field for holding DirectoryTemplates data
		/// </summary>
		private
			string
			directory_templates
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// DirectoryTemplatesChanged (<propertyname>Changed) is intercepted by Windows Forms
		/// 1.x and 2.0 event dispatcher 
		/// and for some CLR types by WPF event dispatcher 
		/// usually INotifyPropertyChanged and PropertyChanged event
		///</summary>
		public
			event
			EventHandler
			DirectoryTemplatesChanged
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch start of the property before it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			DirectoryTemplatesChanging
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch end of the property after it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			DirectoryTemplatesChangePerformed
			;
		# endregion Property.DirectoryTemplates
		//---------------------------------------------------------------------------

		//---------------------------------------------------------------------------
		# region  Property.FilesInTemplate
		/// <summary>
		/// FilesInTemplate
		/// </summary>
		public
		  List<string>
		  FilesInTemplate
		{
			get
			{
				return files_in_template;
			} // FilesInTemplate.get
			set
			{
				// for multi threading apps uncomment lines beginnig with //MT:
				//MT: object locker =  new object();          
				if (value != files_in_template)
				{
					// raise/trigger Event if somebody has subscribed to the event
					if (null != FilesInTemplateChanging)
					{
						// raise/trigger Event
						FilesInTemplateChanging(this, new EventArgs());
					}

					//MT: lock(files_in_template)
					{
						// Set the property value
						files_in_template = value;
						// raise/trigger Event if somebody has subscribed to the event
						if (null != FilesInTemplateChanged)
						{
							// raise/trigger Event
							FilesInTemplateChanged(this, new EventArgs());
						}
					}

					// raise/trigger Event if somebody has subscribed to the event
					if (null != FilesInTemplateChangePerformed)
					{
						// raise/trigger Event
						FilesInTemplateChangePerformed(this, new EventArgs());
					}
				}
				//MT: locker = null;

				return;
			} // FilesInTemplate.set
		} // FilesInTemplate

		/// <summary>
		/// private member field for holding FilesInTemplate data
		/// </summary>
		private
			List<string>
			files_in_template
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// FilesInTemplateChanged (<propertyname>Changed) is intercepted by Windows Forms
		/// 1.x and 2.0 event dispatcher 
		/// and for some CLR types by WPF event dispatcher 
		/// usually INotifyPropertyChanged and PropertyChanged event
		///</summary>
		public
			event
			EventHandler
			FilesInTemplateChanged
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch start of the property before it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			FilesInTemplateChanging
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch end of the property after it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			FilesInTemplateChangePerformed
			;
		# endregion Property.FilesInTemplate
		//---------------------------------------------------------------------------

		//---------------------------------------------------------------------------
		# region  Property.DirectoryOutput
		/// <summary>
		/// DirectoryOutput
		/// </summary>
		public
		  string
		  DirectoryOutput
		{
			get
			{
				return directory_output;
			} // DirectoryOutput.get
			set
			{
				// for multi threading apps uncomment lines beginnig with //MT:
				//MT: object locker =  new object();          
				if (value != directory_output)
				{
					// raise/trigger Event if somebody has subscribed to the event
					if (null != DirectoryOutputChanging)
					{
						// raise/trigger Event
						DirectoryOutputChanging(this, new EventArgs());
					}

					//MT: lock(directory_output)
					{
						// Set the property value
						directory_output = value;
						// raise/trigger Event if somebody has subscribed to the event
						if (null != DirectoryOutputChanged)
						{
							// raise/trigger Event
							DirectoryOutputChanged(this, new EventArgs());
						}
					}

					// raise/trigger Event if somebody has subscribed to the event
					if (null != DirectoryOutputChangePerformed)
					{
						// raise/trigger Event
						DirectoryOutputChangePerformed(this, new EventArgs());
					}
				}
				//MT: locker = null;

				return;
			} // DirectoryOutput.set
		} // DirectoryOutput

		/// <summary>
		/// private member field for holding DirectoryOutput data
		/// </summary>
		private
			string
			directory_output
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// DirectoryOutputChanged (<propertyname>Changed) is intercepted by Windows Forms
		/// 1.x and 2.0 event dispatcher 
		/// and for some CLR types by WPF event dispatcher 
		/// usually INotifyPropertyChanged and PropertyChanged event
		///</summary>
		public
			event
			EventHandler
			DirectoryOutputChanged
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch start of the property before it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			DirectoryOutputChanging
			;

		///<summary>
		/// Event for wiring BusinessLogic object changes and presentation
		/// layer notifications.
		/// Use this event to catch end of the property after it changes
		///</summary>
		public
			event
			EventHandler    //Core.Globals.PropertyChangedEventHandler
			DirectoryOutputChangePerformed
			;
		# endregion Property.DirectoryOutput
		//---------------------------------------------------------------------------

		public
			ProvisioningGenerator
			(
			)
		{
			DirectoryTemplates = "";
			DirectoryOutput = "";
			FilesInTemplate = new List<string>();

			return;
		}
	}
}
